import numpy as np
# 最大值与最小值
# numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
'''
可以通过 axis 参数传入坐标轴来指定统计的轴，当指定 axis 时，axis 的范围为 ndarray 的维度范围，可以利用 shape 函数获取 ndrray 的维度。
'''
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('最小值', 15, '*'))
# print("所有维度的最小值：")
# print(np.amin(a))
# print('\n')
# print("0轴的最小值：")
# print(np.amin(a, 0))
# print('\n')
# print("1轴的最小值：")
# print(np.amin(a, 1))
# print('\n')

# numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
'''
可以通过 axis 参数传入坐标轴来指定统计的轴，当指定 axis 时，axis 的范围为 ndarray 的维度范围，可以利用 shape 函数获取 ndrray 的维度。
'''
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('最大值', 15, '*'))
# print("所有维度的最大值：")
# print(np.amax(a))
# print('\n')
# print("0轴的最大值：")
# print(np.amax(a, 0))
# print('\n')
# print("1轴的最大值：")
# print(np.amax(a, 1))
# print('\n')


# numpy.ptp() 计算数组中元素最大值与最小值的差（最大值 - 最小值）。
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('最大值与最小值的差', 15, '*'))
# print("所有维度的极差：")
# print(np.ptp(a))
# print('\n')
# print("0轴的极差：")
# print(np.ptp(a, 0))
# print('\n')
# print("1轴的极差：")
# print(np.ptp(a, 1))
# print('\n')

# numpy.percentile()
'''
百分位数是统计中使用的度量，表示小于这个值的观察值的百分比。
numpy.percentile(a, q, axis) 接收以下参数:
a: 输入数组
q: 要计算的百分位数，在 0 ~ 100 之间
axis: 沿着它计算百分位数的轴
'''
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('百分位数', 15, '*'))
# print("50%的分位数，即数组排序之后的中位数：")
# print(np.percentile(a, 50))
# print('\n')
# print("0轴的中位数：")
# print(np.percentile(a, 50, 0))
# print('\n')
# print("1轴的中位数：")
# print(np.percentile(a, 50, 1))
# print('\n')

# numpy.median() 用于计算数组 a 中元素的中位数（中值）
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('计算中位数', 15, '*'))
# print("所有元素的中位数：")
# print(np.median(a))
# print('\n')
# print("0轴的中位数：")
# print(np.median(a, 0))
# print('\n')
# print("1轴的中位数：")
# print(np.median(a, 1))
# print('\n')

# todo 总数与均值
# numpy.sum() 用于按指定轴计算数组中的元素的和。
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('求和', 15, '*'))
# print("所有维度的和：")
# print(np.sum(a))
# print('\n')
# print("按0轴求和：")
# print(np.sum(a, 0))
# print('\n')
# print("按1轴求和：")
# print(np.sum(a, 1))
# print('\n')

# numpy.mean() 按轴计算数组中元素的算术平均值。
# a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print("初始数组：")
# print(a)
# print('\n')
#
# print(np.char.center('计算算术平均值', 15, '*'))
# print("所有元素的算术平均值：")
# print(np.mean(a))
# print('\n')
# print("0轴的算术平均值：")
# print(np.mean(a, 0))
# print('\n')
# print("1轴的算术平均值：")
# print(np.mean(a, 1))
# print('\n')

# numpy.average() 根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值，该函数可以接收一个轴参数，如果没有指定轴，则数组会被展开。
# print(np.char.center('加权平均值', 15, '*'))
# b = np.array([1, 2, 3, 4])
# print("所有元素的加权平均值（不指定权重相当于求平均值）：")
# print(np.average(b))
# print('\n')
# print("指定权重的加权平均值：")
# print(np.average(b, weights=[4, 3, 2, 1]))
# print('\n')
# print("指定权重的加权平均值以及权重的和：") 通过returned参数来设置是否返回权重的和。在上例中，权重数组中元素相加等于10
# print(np.average(b, weights=[4, 3, 2, 1], returned=True))
# print('\n')

# todo 方差与标准差
# numpy.var() 计算数组中元素的方差 统计中的方差（样本方差）是每个样本值与全体样本值的平均数之差的平方值的平均数。计算公式为： mean((x - x.mean())** 2)。
# print(np.char.center('计算方差', 15, '*'))
# print(np.var([1, 2, 3, 4]))
# print('\n')

# numpy.std() 计算数组中袁术的标准差 标准差是一组数据平均值分散程度的一种度量，是方差的算术平方根。标准差公式如下：std = sqrt(mean((x - x.mean())**2))

# print(np.char.center('计算标准差', 15, '*'))
# print(np.std([1, 2, 3, 4]))
# print('\n')

# 参考：https://numpy.org/devdocs/reference/routines.statistics.html